<?php

/**
 * Crea un nuevo cliente de MyAltarget.
 *
 * @package    symfony
 * @subpackage task
 * @author     Carlo Lopez <carlo.xavier.lopez@gmail.com>
 */
class nuevoClienteTask extends sfBaseTask
{
  /**
   * @see sfTask
   */
  protected function configure()
  {
    $this->addArguments(array(
      new sfCommandArgument('email_address', sfCommandArgument::REQUIRED, 'La direccion de correo electronico del cliente'),
      new sfCommandArgument('username', sfCommandArgument::REQUIRED, 'El nombre de usuario que el cliente utilizara'),
      new sfCommandArgument('password', sfCommandArgument::REQUIRED, 'El password que el cliente utilizara para ingresar'),
      new sfCommandArgument('first_name', sfCommandArgument::REQUIRED, 'El nombre del cliente'),
      new sfCommandArgument('last_name', sfCommandArgument::REQUIRED, 'El apellido del cliente'),
      //new sfCommandArgument('user_id', sfCommandArgument::REQUIRED, 'El numero de identificacion del cliente'), 
      								     // CI o RIF por ejemplo
      new sfCommandArgument('country', sfCommandArgument::REQUIRED, 'El pais de residencia del cliente'),
     new sfCommandArgument('status', sfCommandArgument::REQUIRED, 'El estatus del cliente (activo|bloqueado)'),
    ));

  
    $this->addOptions(array(
      new sfCommandOption('is-franchise', null, sfCommandOption::PARAMETER_NONE, 'Indica que el cliente es una franquicia', null),
      new sfCommandOption('web-page', null, sfCommandOption::PARAMETER_REQUIRED, 'El nombre del sitio web del cliente', null),
      new sfCommandOption('sector', null, sfCommandOption::PARAMETER_REQUIRED, 'El sector en el que opera el cliente', null),

      new sfCommandOption('rebound-email', null, sfCommandOption::PARAMETER_REQUIRED, 'El email de para los rebotes', null),

      new sfCommandOption('storage-server', null, sfCommandOption::PARAMETER_REQUIRED, 'Servidor de Almacenamiento', null),
    ));
  

    $this->namespace = 'myaltarget';
    $this->name = 'nuevo-cliente';
    $this->briefDescription = 'Crea un nuevo cliente';

    $this->detailedDescription = <<<EOF
La tarea [myaltarget:nuevo-cliente|INFO] crea un nuevo cliente:

  [./symfony myaltarget:nuevo-cliente mail@example.com carlo password Carlo Lopez 18745469 Venezuela Activo --storage-server="server.domain.com" --rebound-email="mail@company.com"|INFO]
EOF;
  }

  /**
   * @see sfTask
   */
  protected function execute($argumentos = array(), $opciones = array())
  {
    $databaseManager = new sfDatabaseManager($this->configuration);

    $usuario = new TbsCliente();

    $usuario->setCliEmailAddress($argumentos['email_address']);

    $usuario->setCliNombre($argumentos['first_name'] . ' ' . 'Del sistema' ); //$argumentos['last_name'] );
    if(isset($opciones['user_id']))
      $usuario->setCliRif($argumentos['user_id']);

    $codpais = Doctrine::getTable('TbcPais')->getPaisPorNombre($argumentos['country']);
    if(!$codpais)
      throw new sfException('El pais ' . $argumentos['country']. ' no esta en la base de datos');

    $usuario->setCliCodpais($codpais);
    if(isset($opciones['cod_sec']))
      $usuario->setCliCodsec($argumentos['cod_sec']);

    if(isset($opciones['correo_rebo']))
      $usuario->setCliCorreorebo($argumentos['correo_rebo']);

    if(isset($opciones['es_franquicia']))
      $usuario->setCliFranquicia($argumentos['es_franquicia']);

    /* hasta ahora los plugins no tiene archivos de configuracion, cuando lo tengan esta seccion */
    /* se debe movilizar hacia uno de esos */
    if(!strcasecmp('Activo',$argumentos['status']))
      $usuario->setCliStatus('A');
    else if(!strcasecmp('Bloqueado',$argumentos['status']))
      $usuario->setCliStatus('B');
    else
      throw new sfException('El status ' . $argumentos['status']. ' no esta permitido');

    
    //$usuario->setCliNit();
    //$usuario->setCliPw();

    //$usuario->setCliCodseal(1);

    $usuario->setCliCodseal(AlgoritmoSelecAlmacena::getServidor()->getSealCodigo());

    $usuario->save();
    $this->logSection('myaltarget', sprintf('Se ha creado el nuevo cliente "%s"', $argumentos['username']));
/*
    $user = new sfGuardUser();
    $user->setEmailAddress($arguments['email_address']);
    $user->setUsername($arguments['username']);
    $user->setPassword($arguments['password']);
    $user->setFirstName($arguments['first_name']);
    $user->setLastName($arguments['last_name']);
    $user->setIsActive(true);
    $user->setIsSuperAdmin($options['is-super-admin']);
    $user->save();
*/
    //$this->logSection('myaltarget', sprintf('Se ha creado el nuevo cliente "%s"', $arguments['username']));
  }
}
